package com.pms.utils;

import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

import java.util.HashMap;
import java.util.Map;

/**
 * mp代码生成
 *
 * @author zyl
 * @create 2017-06-05 13:55
 **/
public class MpGenerator {
//    public static void main(String[] args) {
//        AutoGenerator mpg = new AutoGenerator();
//        // 全局配置
//
//        GlobalConfig gc = new GlobalConfig();
//        gc.setOutputDir("D://");
////        gc.setOutputDir("D:\\Users\\Administrator\\IdeaProjects\\pms\\pms-iot\\src\\main\\java");
//        gc.setFileOverride(true);
//        gc.setActiveRecord(true);
//        gc.setEnableCache(false);// XML 二级缓存
//
//        gc.setBaseResultMap(true);// XML ResultMap
//
//        gc.setBaseColumnList(false);// XML columList
//
//        gc.setAuthor("ljb");
//        // 自定义文件命名，注意 %s 会自动填充表实体属性！
//
//        // gc.setMapperName("%sDao");
//
//        // gc.setXmlName("%sDao");
//
//        // gc.setServiceName("MP%sService");
//
//        // gc.setServiceImplName("%sServiceDiy");
//
//        // gc.setControllerName("%sAction");
//
//        mpg.setGlobalConfig(gc);
//        // 数据源配置
//
//        DataSourceConfig dsc = new DataSourceConfig();
//        dsc.setDbType(DbType.MYSQL);
//        dsc.setDriverName("com.mysql.jdbc.Driver");
//        dsc.setUsername("root");
//        dsc.setPassword("12345654321");
//        dsc.setUrl("jdbc:mysql://120.26.235.96:3306/cloud_iot?characterEncoding=utf8");
//        mpg.setDataSource(dsc);
//        // 策略配置
//
//        StrategyConfig strategy = new StrategyConfig();
//        //strategy.setTablePrefix("beautiful_");// 此处可以修改为您的表前缀
//
//        strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
//       // strategy.setInclude(new String[] { "sys_config","sys_log","sys_menu","sys_role","sys_role_menu","sys_user","sys_user_role","sys_user_token"}); // 需要生成的表
//        strategy.setInclude(new String[] { "iot_alarm_record","iot_alarm_type"});
//        //strategy.setInclude(new String[] { "schedule_job","schedule_job_log"}); // 需要生成的表
//
//        // strategy.setExclude(new String[]{"test"}); // 排除生成的表
//
//        // 自定义实体父类
//
//        // strategy.setSuperEntityClass("");
//
//        // 自定义实体，公共字段
//
//        // strategy.setSuperEntityColumns(new String[] { "test_id", "age" });
//
//        // 自定义 mapper 父类
//
//        // strategy.setSuperMapperClass("");
//
//        // 自定义 service 父类
//
//        // strategy.setSuperServiceClass("");
//
//        // 自定义 service 实现类父类
//
//        // strategy.setSuperServiceImplClass("");
//
//        // 自定义 web 父类
//
//        strategy.setSuperControllerClass("BaseController");
//
//        // 【实体】是否生成字段常量（默认 false）
//
//        // public static final String ID = "test_id";
//
//        // strategy.setEntityColumnConstant(true);
//
//        // 【实体】是否为构建者模型（默认 false）
//
//        // public User setName(String name) {this.name = name; return this;}
//
//        // strategy.setEntityBuliderModel(true);
//
//        mpg.setStrategy(strategy);
//        // 包配置
//
//        PackageConfig pc = new PackageConfig();
//        pc.setParent("com");
//        pc.setModuleName("pms");
//        pc.setXml("mapper");
//        mpg.setPackageInfo(pc);
//        // 注入自定义配置，可以在 VM 中使用 cfg.abc 设置的值
//
//        InjectionConfig cfg = new InjectionConfig() {
//            @Override
//            public void initMap() {
//                Map<String, Object> map = new HashMap<String, Object>();
//                map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
//                this.setMap(map);
//            }
//        };
//        mpg.setCfg(cfg);
//        // 自定义模板配置，可以 copy 源码 mybatis-plus/src/main/resources/template 下面内容修改，
//
//        // 放置自己项目的 src/main/resources/template 目录下, 默认名称一下可以不配置，也可以自定义模板名称
//
//        // TemplateConfig tc = new TemplateConfig();
//
//        // tc.setController("...");
//
//        // tc.setEntity("...");
//
//        // tc.setMapper("...");
//
//        // tc.setXml("...");
//
//        // tc.setService("...");
//
//        // tc.setServiceImpl("...");
//
//        // mpg.setTemplate(tc);
//
//        // 执行生成
//
//        mpg.execute();
//        // 打印注入设置
//
//        System.err.println(mpg.getCfg().getMap().get("abc"));
//    }

}
